package com.gitee.zhangchenyan.takin.auth;

/**
 * @Deacription 登录
 * @Author zhanglu
 * @Date 2021/12/8 22:01
 * @Version 1.0
 **/
public interface AuthUserService {

    /**
     * 登录
     *
     * @param user 登录后需要缓存的用户对象
     * @return 返回登录信息
     */
    AuthUserIdentity login(Object user);

    /**
     * 登录
     *
     * @param user    登录后需要缓存的用户对象
     * @param seconds 登录过期时间-秒
     * @return 返回登录信息
     */
    AuthUserIdentity login(Object user, Long seconds);

    /**
     * 登出
     */
    void logout();

    /**
     * 获取登录成功的token
     *
     * @return token
     */
    String getToken();

    /**
     * 获取登录后存的用户对象
     *
     * @param clazz 实
     * @param <A>
     * @return
     */
    <A> A getUser(Class<A> clazz);

    Long getId();

}
